iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Modern Web

Phoenix 1.7 完全教學系列 第 7

7 Phoenix 專案結構

  • 分享至 

  • xImage
  •  

建立新的 Phoenix 專案

使用 mix phx.new 後面接上專案名稱來建立新的 Phoenix 專案

但先別急,我們先輸入 mix phx.new 有什麼選項

mix phx.new

在準備開發環境的時候我們有提到,這一次我們要使用 SQLite 來省去另外開資料庫的麻煩, Phoenix 預設使用 PostgreSQL,但是除非有用到個別資料庫的特殊功能,不然都是可以自由替換的。

加上這次的專案名稱與資料庫設定

mix phx.new gratitude --database sqlite3

中間會問我們要不要把需要的套件下載安裝,按 Y 即可
也可以後來再裝。

Fetch and install dependencies? [Yn]

每次執行這種比較大的指令都要注意執行完成後他有什麼額外的提示,
Phoenix 很貼心的把接下來的步驟也列給我們了,我們一步一步跟著做

cd 進入剛剛建立的 gratitude (或是你的專案名稱)

cd gratitude

config/dev.exs 設定好我們的資料庫連線並建立,
由於我們使用 SQLite 可以忽略這步驟,直接建立即可

mix ecto.create

資料庫建立完成後,我們就可以在本地(localhost) 啟動我們的 Phoenix app

mix phx.server

如果想要啟動 Phoenix 並同時使用 iex 的話可以使用
(與上個步驟擇一)

iex -S mix phx.server

這時候我們可以打開瀏覽器,並在網址輸入

localhost:4000

(Phoenix 預設是使用 4000 port)

我們便可以看到預設的首頁

https://ithelp.ithome.com.tw/upload/images/20230922/20141054gznc1cscP6.png

(在終端機按 control + c 兩次可以停止伺服器)

加入版控

專案剛產生出來的時候,我建議這個時候就可以加入版控了

git init
git add .
git commit -m'init'

Phoenix 的資料夾結構

lib 資料夾

裝主要程式的地方
我們可以看到裡面目前有兩組

gratitude資料夾 與 gratitude.ex
這一組是我們主要的商業邏輯

gratitude_web資料夾 與 gratitude_web.ex
則是負責網頁畫面邏輯

雖然我們用 phx_new 來一次產生了整個 Phoenix App,
但是其實還是遵照著 elixir mix 專案的方式擺設。

我們接下來會依照這個模式,把商業邏輯與畫面邏輯分開放:
商業或App的邏輯都放在 gratitude 資料夾。
如果是網頁的畫面更新邏輯,則是放在 gratitude_web 這邊。

Config 資料夾

顧名思義就是各種設定與金鑰的擺放處或加密邏輯,如資料庫的連線設定、API 的加密金鑰、網頁伺服器的設定等。
我們現在還不會動到他。

Assets 資料夾

Javascript 與 CSS 都放在這邊,之後會在加入前端套件時提到。

Priv 資料夾

裡面有三個資料夾

  • static 資料夾
    這裡面放了圖片之類的靜態資源
  • repo 資料夾
    資料庫的 migration 紀錄檔與 seed 檔案都會放在這邊,之後再講 Elixir 內的資料庫套件 Ecto 時會一起介紹。
  • gettext 資料夾
    這裡放的是多語言的翻譯檔

Test 資料夾

測試檔案放在邊,測試檔案的命名擺放方法是盡量的與 lib 資料夾同步。

如果我有一個檔案在

lib/gratitude/blog/posts.ex

想要寫測試的話,我就會建立一個相對應路徑並在後面加上 _test.exs

test/gratitude/blog/posts_test.exs

(要注意的是,大部分的測試都是使用 exs 副檔名,Elixir 腳本都是用這一個 exs 副檔名,這些檔案只有在需要的時候才會 compile 並執行。並不會先 compile 成 beam 檔案,詳細可參考官網說明,不過現在先知道測試使用 exs 就可以了)

Deps 資料夾

這個資料夾不會進版控

所以專案依賴的套件會被下載到這邊,平常不會需要進去更改。

_build 資料夾

這個資料夾不會進版控

Elixir 程式碼要執行時,要先編譯 (compile) 成 beam 檔案,
這些檔案都放在這邊,平常不會需要進去更改。

其他檔案

README.md

目前預設裡面就有一些執行專案的提示,如果是跟團隊一起維護這個專案的話,會把專案相關初次設定、執行指令、部署方式等等的指令記錄在這邊方便查詢使用。

sqlite 資料庫檔案

gratitude_dev.db
gratitude_dev.db-shm
gratitude_dev.db-wal

這三個是我們的資料庫檔案本身,不會直接修改,可以忽略他們,需要的話可以複製備份。


上一篇
6 快速上手夠用的 Elixir (常用慣例與寫法)
下一篇
8 Schema
系列文
Phoenix 1.7 完全教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言